% Ejercicio "Símbolos directores"
\subsection*{\fbox{\theejercicio} - S\'{\i}mbolos directores}

Para la gram\'atica:

\begin{center}
\begin{tabular}{|llcl|} \hline
        &          &               &                       \\
{\tt 1} & {\em E}  & $\rightarrow$ & {\em TE'}             \\
{\tt 2} & {\em E'} & $\rightarrow$ & {\bf +}{\em TE'}      \\
{\tt 3} & {\em E'} & $\rightarrow$ & $\varepsilon$\        \\
{\tt 4} & {\em T}  & $\rightarrow$ & {\em FT'}             \\
{\tt 5} & {\em T'} & $\rightarrow$ & {\bf *}{\em FT'}      \\
{\tt 6} & {\em T'} & $\rightarrow$ & $\varepsilon$\        \\
{\tt 7} & {\em F}  & $\rightarrow$ & {\bf (}{\em E}{\bf )} \\
{\tt 8} & {\em F}  & $\rightarrow$ & {\bf id}              \\
        &          &               &                       \\ \hline
\end{tabular}
\end{center}

\begin{enumerate}[1)]
\item Obtener los s\'{\i}mbolos directores de todas las reglas.
\item Escribir el procedimiento correspondiente al no terminal {\em T'} suponiendo que el analizador sint\'actico se construye utilizando un lenguaje que admita recursividad.
\item Indicar la secuencia de reglas que hay que aplicar en en a\'alisis descendente para obtener la
cadena {\bf id*(id)}.
\end{enumerate}

% Solución del ejercicio
\subsubsection*{SOLUCI\'ON}

Apartado 1)

\begin{center}
\begin{tabular}{|l|lcl|l|} \hline
        &          &               &                       & {\bf S\'{\i}mbolos directores} \\ \hline
{\tt 1} & {\em E}  & $\rightarrow$ & {\em TE'}             & {\bf ( id}                     \\ \hline
{\tt 2} & {\em E'} & $\rightarrow$ & {\bf +}{\em TE'}      & {\bf +}                        \\ \hline
{\tt 3} & {\em E'} & $\rightarrow$ & $\varepsilon$\        & {\bf \$ )}                     \\ \hline
{\tt 4} & {\em T}  & $\rightarrow$ & {\em FT'}             & {\bf ( id}                     \\ \hline
{\tt 5} & {\em T'} & $\rightarrow$ & {\bf *}{\em FT'}      & {\bf *}                        \\ \hline
{\tt 6} & {\em T'} & $\rightarrow$ & $\varepsilon$\        & {\bf + ) \$}                   \\ \hline
{\tt 7} & {\em F}  & $\rightarrow$ & {\bf (}{\em E}{\bf )} & {\bf (}                        \\ \hline
{\tt 8} & {\em F}  & $\rightarrow$ & {\bf id}              & {\bf id}                       \\ \hline
\end{tabular}
\end{center}

Apartado 2)

Procedimiento para el no terminal {\em T'}:
\begin{verbatim}
T'() {
   switch(entrada) {
      case `*':           entrada = leer_siguiente(); F() T'(); break;
      case `+', `)', `$': break;
      default:            error();
}
\end{verbatim}

Apartado 3)

Parse izquierdo de la cadena {\bf id*(id)}:

\fbox{1-4-8-5-7-1-4-8-6-3-6-3}